// PROGRAMA : SCRPPB04(BATCH = > JCL2)
// :(GERADO A PARTIR DO SCRPP004)
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// BIBLIOTECA : SISP
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : HISTORICO DE EMISSOES DE ATESTADOS DE
// ANTECEDENTTES PERIODO E USUARIO.
// PARA O SHOPPING DO CIDADAO
// PROGRAMADOR:
// DATA : 01/07/2002
// OBS : ESTE PROGRAMA DEVE SER RODADADO COM O "JCL2"
// :
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrppb04Report;
import br.com.vti.sisp_sicrim.antigo.model.DidEmissao;
import br.com.vti.sisp_sicrim.antigo.model.SicCadnovo;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrppb04 OBJETIVO : HISTORICO DE EMISSOES DE ATESTADOS DE ANTECEDENTTES PERIODO E USUARIO. PARA O SHOPPING DO CIDADAO *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/scrppb04")
public class Scrppb04 {
	// Views utilizadas
	SicCadnovo sicCadnovoView = new SicCadnovo();
	SicTabelas vwDvetab = new SicTabelas();
	DidEmissao vwEmissao = new DidEmissao();
	// Telas/relatorios utilizados
	Scrppb04Report report;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrppb04 scrppb04Anterior;
	String faseproc = "0";

	// DATA DE APOIO DA TABELA.
	private int jUsuario = 0;
	// private String nomeClasse = this.getClass().getSimpleName();
	// private String dtinicio = "";
	// private String dtfinal = "";
	// private String jNomeide = "";
	// private int jCont = 0;
	// private int jCont1 = 0;
	// private int dataCorrente = 0;
	// private int datini = 0;
	// private int datfim = 0;
	// private int dtini = 0;
	private int dtfim = 0;
	private String chalfa1 = "";
	// private String descel1 = "";
	// CONTEM
	private String s1 = "";

	public Scrppb04(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar() {
		try {
			main();
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			// excp.trataErroScrcerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main() throws Exception {
		report.setJcont(0);
		report.setJcont1(0);
		sessao.getScrg001().setWVltw(5);
		// DEFINE PRINTER(EMF = 1)
		// RELATORIO 1 PS=60 LS=132 SG=OFF
		report = new Scrppb04Report();
		report.setPageSize(60);
		report.setLineSize(132);
		// RELATORIO
		// OUTPUT 'P69E'

		// 1T 'DATA DATINI :' DDT '/' MDT '/' ADT
		// 1T 'DATA DATFIM :' DFI '/' MFI '/' AFI
		jUsuario = 0;
		// 1T 'USUARIO :' #USUARIO
		report.setDatini(01012002);
		report.setDatfim(9082002);
		if (UtilBean.validarMascara(report.getDatini(), "yyyyMMdd")) {
			UtilBean.mensagemTexto("DATA INICIAL INVALIDA");
		}
		if (UtilBean.extraiDigitos(report.getDatini(), 8, 5, 4) < 1998) {
			UtilBean.mensagemTexto("ANO INVALIDO < 1998");
		}
		if (UtilBean.validarMascara(report.getDatfim(), "yyyyMMdd")) {
			UtilBean.mensagemTexto("DATA FINAL INVALIDA");
		}
		if (UtilBean.extraiDigitos(report.getDatfim(), 8, 5, 4) < 1998) {
			UtilBean.mensagemTexto("ANO INVALIDO < 1998");
		}
		report.setDtini(report.getDatini());
		report.setDtini((int) funcoes.sissd002(report.getDtini()));
		dtfim = report.getDatfim();
		dtfim = (int) funcoes.sissd002(dtfim);
		if (report.getDtini() > dtfim) {
			UtilBean.mensagemTexto("DATA INICIAL > DATA FINAL");
		}
		report.gravaRelatorio(1);
		detalhe();
		rodape();
		report.imprimir();
	}

	private void detalhe() throws Exception {
		if (jUsuario != 0) {
			while (sicCadnovoView.pesquisaTipoRgClas("ET")) {
				if (sicCadnovoView.getMatriculaFuncAtu() == jUsuario) {
					if (report.getDtini() < sicCadnovoView.getDataReg() && dtfim > sicCadnovoView.getDataReg()) {
						continue;
					} else {
						dados();
					}
				}

			}
		} else {
			while (sicCadnovoView.leituraDataRegFaixa(report.getDtini(), dtfim)) {
				if (sicCadnovoView.getTipoRg().equals("ET")) {
					dados();
				}
				if (sicCadnovoView.quebraNovodatareg()) {
					totalDia();
					report.setJcont(0);
				}
			}

		}
	}

	private void dados() throws Exception {
		s1 = "";
		s1 = UtilBean.moveSubstring(s1, 0, 3, "N", 888);
		s1 = UtilBean.moveSubstring(s1, 3, 12, "N", sicCadnovoView.getMatriculaFuncAtu());
		// TABELA DE USER-ID/POSTO
		if (sicCadnovoView.getMatriculaFuncAtu() == 0) {
			UtilBean.mensagemTexto("MATRICULA NAO EXISTE NA TABELA DE USER-ID/POSTO(888)", sicCadnovoView.getMatriculaFuncAtu());
			sicCadnovoView.setMatriculaFuncAtu(0);
		}
		while (vwDvetab.pesquisaTabele(888, (long) sicCadnovoView.getMatriculaFuncAtu())) {
			report.setDescel1(vwDvetab.getDescricaoElem());
			report.setTPosto(UtilBean.subStr(vwDvetab.getDescricaoElem(), 38, 3));
			chalfa1 = vwDvetab.getChaveAlfaAcesso();
		}
		report.setDtini(sicCadnovoView.getDataReg());
		report.setDtini((int) funcoes.sissd002(report.getDtini()));
		report.setJnomeide(sicCadnovoView.getNomePessoa());
		report.setNovoMatfuncAtu(sicCadnovoView.getMatriculaFuncAtu());
		report.setNovoRegger(sicCadnovoView.getNumeroRg());

		report.gravaRelatorio(2);

		// RELATORIO
		// 84T NOVO-HORA-ATU (EM=99:99:99)

		report.setJcont(report.getJcont() + 1);

		report.setJcont1(report.getJcont1() + 1);
	} // SET CONTROL 'N'

	// 02/02 DIDEMI-REGGER
	private void rodape() throws ParseException, JRException {
		report.gravaRelatorio(3);

		// RELATORIO
	}

	private void totalDia() throws ParseException, JRException {
		report.gravaRelatorio(4);
		// RELATORIO
		report.saltaLinhas(1);
	}
}
